#ifndef __DATABASE__
#define __DATABASE__
#include <mysql/mysql.h>
#include <stdio.h>
#include <string.h>
#include <time.h>

typedef struct dataBase_s {
    char host[50];  // 主机名
    char user[50];  // 用户名
    char passwd[50];// 密码
    char db[50];    // 数据库名
} dataBase_t;

// 创建数据表
int initGlobalDataBase(dataBase_t database);

// 单个线程初始化
int initDatabase(MYSQL** mysql,dataBase_t database);
// 检测表是否存在 
int isExistTable(MYSQL* mysql,dataBase_t database,const char* table_name);
/**
 * 插入表项 insertDataElem
 * data_table_name - 数据表名
 * data_elem       - 数据表行元素
 * 例如: const char* data_elem = "(default,'user_name','user_pwd','user_salt',default)";
 * default - 表示使用默认规则
 */
int insertDataElem(MYSQL* mysql,const char* data_table_name,const char* data_elem);
int insertDirElem(MYSQL* mysql,const char* dir_name,const int user_id,const long long file_size,const char* file_path,const int parent_id);                // 插入目录
int insertFileElem(MYSQL* mysql,const char* file_name,const int user_id,const char* hash,const long long file_size,const char* file_path,const int parent_id);   // 插入文件
int closeDataBase(MYSQL** mysql);

// 创建用户后,为该用户创建目录
int createUserDir(MYSQL* mysql,const char* user_name);
// 获取用户的根目录id
int getUserRootDirId(MYSQL* mysql,const int user_id);
// 根据文件id获取文件路径
int getFilePathByFileID(MYSQL* mysql,const int file_id,char** current_file_path);

int selectField(MYSQL* mysql,const char* table_name,const char* field_name,const char* where_query,char **result);

// 根据file_name、file_path查询文件大小，通过file_size返回结果
int getFileSize(MYSQL *mysql, const char *file_name, 
    const char *file_path, int *file_size);
    
// 根据 file_name、file_path查询文件哈希，通过file_hash返回结果
int getFileHash(MYSQL *mysql, const char *file_name, 
    const char *file_path, char *file_hash);




#endif